package com.qf.day03;

import java.sql.Time;
import java.util.Random;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

/**
 * JUC强大的辅助类  信号量   Semaphore
 * @author lixu
 */
public class SemaphoreDemo {

    //案例：6辆车抢占3个车位
    public static void main(String[] args) {
        //1:3个车位
        Semaphore semaphore = new Semaphore(3);//初始值

        //6辆车
        for (int i = 1; i <= 6; i++) {
            String name = String.valueOf(i);
            new Thread(() -> {
                //2:抢车位
                try {
                    //阻塞在此  因为没有车位
                    semaphore.acquire();//默认减少1个车位
                    System.out.println("第" + name + "辆车占上了车位!!");
                    //停留的时间
                    TimeUnit.MILLISECONDS.sleep(new Random().nextInt(1000));
                    //释放车位
                    semaphore.release();//默认增加1个车位
                    System.out.println("第" + name + "辆车离开了车位!!");
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            },name).start();

        }


    }
}
